#include "widget.h"
#include "ui_widget.h"
#include <QtXml>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->ziliao,&QCheckBox::clicked,this,&Widget::bangding); //示例中只绑定了“资料”一个可选项
}

void Widget::ReadXml()
{
    QSqlDatabase db = c_db.getDatabase();
    //新建QDomDocument类对象，它代表一个XML文档
    QDomDocument doc;
    //建立指向"my.xml"文件的QFile对象
    QFile file("my.xml");
    //以只读方式打开
    if(!file.open(QIODevice::ReadOnly))
        return 0;
    //将文件内容读到doc中
    if(!doc.setContent(&file))
    {
        file.close();
        return 0;
    }
    file.close();
    //获取doc的第一个节点，即XML说明
    QDomNode firstNode = doc.firstChild();
    //输出XML说明
    string s1 = firstNode.nodeName();
    QString sql = "insert into pan(value) values(?)";
    QSqlQuery query;
    query.prepare(sql);
    query.addBindValue(s1);
    string s2 = firstNode.nodeValue();
    QString sql = "insert into pan(value) values(?)";
    QSqlQuery query;
    query.prepare(sql);
    query.addBindValue(s2); //将第一个节点存入数据库
    qDebug()<<firstNode.nodeName()<<firstNode.nodeValue();  //显示第一个节点
    QDomElement docElem = doc.documentElement(); //返回根元素
    QDomNode n = docElem.firstChild(); //返回根节点的第一个子节点
    //如果节点不为空
    while(!n.isNull())
    {
        if(n.isElement())
        {
            QDomElement e = n.toElement(); //将其转换为元素
            qDebug()<<e.tagName()<<e.attribute("id"); //返回元素标记和id属性的值
            QDomNodeList list = e.childNodes(); //获得元素e的所有子节点的列表
            for(int i = 0;i<list.count();i++)
            {
                QDomNode node = list.at(i);
                if(node.isElement())
                {
                    string s1 = node.toElement().tagName();
                    QString sql = "insert into pan(value) values(?)";
                    QSqlQuery query;
                    query.prepare(sql);
                    query.addBindValue(s1);
                    string s2 = node.toElement().text();
                    QString sql = "insert into pan(value) values(?)";
                    QSqlQuery query;
                    query.prepare(sql);
                    query.addBindValue(s2); //存入数据库
                    qDebug()<<" "<<node.toElement().tagName()<<node.toElement().text();
                }
            }
        }
    }

}

void Widget::bangding()
{
    ReadXml();
}

Widget::~Widget()
{
    delete ui;
}
